package sec;

import java.util.ArrayList;

public class RuimteManager {

	ArrayList<Doorgang> doorgangen = new ArrayList<Doorgang>();
	ArrayList<Ruimte> ruimtes = new ArrayList<Ruimte>();
	ArrayList<Drager> dragers = new ArrayList<Drager>();

	public RuimteManager() {

	}

	public ArrayList<Doorgang> getDoorgangen() {
		return doorgangen;
	}

	public ArrayList<Ruimte> getRuimtes() {
		return ruimtes;
	}

	public ArrayList<Drager> getDragers() {
		return dragers;
	}

	public void addRuimte(String naam) {
		ruimtes.add(new Ruimte(naam));
	}

	public void addDoorgang(String ruimte1, String ruimte2, String id, int autorisatie) {
		Ruimte r1 = getRuimte(ruimte1);
		Ruimte r2 = getRuimte(ruimte2);

		doorgangen.add(new Doorgang(r1, r2, id, autorisatie));
	}

	public void addDrager(String naam) {
		Drager addDrager = new Drager(naam);
		dragers.add(addDrager);
		
	}

	public void setDragerInRuimte(String naam, String ruimte) {
		Ruimte ruimteTemp = getRuimte(ruimte);
		Drager dragerTemp = getDrager(naam);
		for (Ruimte r : ruimtes) {
			if (r.containsDrager(dragerTemp)) {
				r.removeDrager(dragerTemp);
			}
		}
		ruimteTemp.addDrager(dragerTemp);
	}

	private Ruimte getRuimte(String naam) {
		for (Ruimte ruimte : ruimtes) {
			if (ruimte.getNaam().equals(naam))
				return ruimte;
		}
		return null;
	}

	private Drager getDrager(String naam) {
		for (Drager drager : dragers) {
			if (drager.getNaam().equals(naam))
				return drager;
		}
		return null;
	}

	private Doorgang getDoorgang(String id) {
		for (Doorgang doorgang : doorgangen) {
			if (doorgang.getId().equals(id))
				return doorgang;
		}
		return null;
	}

	public void addIdentificator(String drager, String identifcatie) {
		Drager temp = getDrager(drager);
		temp.setId(identifcatie);
	}

	public void beweegDoorDoorgang(String naam, String gangId) {
		Doorgang temp = getDoorgang(gangId);
		Drager dragerTemp = getDrager(naam);
		temp.moveDrager(dragerTemp);
	}

	public void setAutorisatie(String naam, int autorisatie) {
		Drager dragerTemp = getDrager(naam);
		dragerTemp.setAutorisatie(autorisatie);
	}

	public ArrayList<Drager> getAanwezigen(String ruimte) {
		Ruimte ruimteTemp = getRuimte(ruimte);
		return ruimteTemp.getAanwezigen();
	}

	public String toString() {
		String retString = "ruimtes: ";
		for (Ruimte ruimte : ruimtes) {
			retString += ruimte.getNaam() + ruimte.getAanwezigen() + " ";
		}
		if (doorgangen.isEmpty())
			return retString;
		retString += "doorgangen: ";
		for (Doorgang gang : doorgangen) {
			retString += gang.getRuimte1().getNaam() + "=" + gang.getDetector().getAutorisatie() + "="
					+ gang.getRuimte2().getNaam() + " ";
		}
		return retString;
	}
}
